home *** CD-ROM | disk | FTP | other *** search
- ; Simple example of multiple data items within one tag
- ; You should have a look at the "single.bb2" example first
-
- INCDIR "include:"
- XINCLUDE "scalos/preferences.bb2"
-
- prefname$ = "Example" ; Name to refer to PrefsHandle with
-
-
- ; First of all we need to allocate a PrefsHandle by name
- ; (There is no specific type for a PrefsHandle, as long as it is a long or a pointer)
- *prefhandle.l = AllocPrefsHandle_(&prefname$)
- If *prefhandle
- NPrint "PrefsHandle successfully allocated"
-
- ; We need an ID and Tag value to refer to a specific preference with
- ; so we create that here (or you could just use them in the library calls)
- ; Remember that the ID must be a long created from 4 ASCII characters
- ; and the Tag cannot be 0
- ID.l = Cvl("MAIN")
- Tag.l = 2
-
-
- ; We keep track of the current entry number so that we can keep on adding
- ; at the end of the list of data items. You can of course, pass any entry
- ; number and it will be inserted in the correct place in the list, unless
- ; the data item already exists and the size is the same then it will be overwritten
- en.l = 0
-
-
- ; Enter a loop which allows the user to enter some data to be stored in the
- ; list.
- Repeat
- ; Prompt user and get a string from them
- Print "Enter a name or leave blank to quit and press return: "
- prefdata$ = Edit$(256)
-
- ; If the string is empty, we do not do anything with it, as that
- ; is the condition for quitting the loop
- If prefdata$<>""
- ; Store string as a preference
- SetEntry_ *prefhandle, ID, Tag, &prefdata$, Len(prefdata$)+1, en
-
- ; increase entry number to store data at
- en+1
- End If
- Until prefdata$=""
-
-
- ; Now we will show each data item in turn, as well as removing it,
- ; this means we do not need to play around with entry numbers here
-
- ; Create some memory for storing the retrieved data
- Dim temp.b(256)
-
- ; While the amount of retrieved bytes is > 0 (this means that it was able
- ; to retrieve some data, and thus the list is not empty)
- While(GetEntry_(*prefhandle, ID, Tag, &temp(0), 256, 0))
- ; Print the data retrieved and then remove that entry
- NPrint "Retrieved: ",Peek$(&temp(0))
- If RemEntry_(*prefhandle, ID, Tag, 0) Then NPrint "Entry removed" Else NPrint "Entry not removed"
- Wend
-
- ; Finally we free the prefs handle
- FreePrefsHandle_ *prefhandle
- End If
-
- NPrint "Press LMB+RMB to quit"
- While Joyb(0)<>3
- Delay_ 1
- Wend
- End
-
-